<HTML>
  <HEAD>
    <TITLE>threadpool Documentation</TITLE>
    <LINK HREF="threadpool.css" REL="stylesheet" TYPE="text/css">
  </HEAD>
  <BODY BGCOLOR="#FFFFFF">
    <DIV CLASS="qindex">
      <TABLE BORDER="0" WIDTH="100%">
        <TR>
          <TD ALIGN="LEFT">
            <B>threadpool</B>
          </TD>
          <TD ALIGN="RIGHT">
            <A CLASS="qindex" HREF="index.html">Overview</A> |
            <A CLASS="qindex" HREF="reference/annotated.html">Reference</A> |
            <A CLASS="qindex" HREF="tutorial/intro.html">Tutorial</A> |
            <A CLASS="qindex" HREF="examples/intro.html">Examples</A> |
            <A CLASS="qindex" HREF="design/intro.html">Design</A>
          </TD>
        </TR>
      </TABLE>
    </DIV>
    <DIV CLASS="qindex">
      <TABLE BORDER="0" WIDTH="100%">
        <TR>
          <TD ALIGN="LEFT">
            <B>Overview</B>
          </TD>
          <TD ALIGN="RIGHT">
            <A CLASS="qindex" HREF="index.html">Main Page</A> |
            <A CLASS="qindex" HREF="changelog.html">Change Log</A> |
            <A CLASS="qindex" HREF="license.html">Software License</A>
          </TD>
        </TR>
      </TABLE>
    </DIV>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="contents">


<h1><a class="anchor" id="changelog">Change Log </a></h1><p><b>0.2.5 (Stable)</b></p>
<ul>
<li>Made threadpool compatible to boost::thread 1.37</li>
<li>Fixed hang problem in shutdown method (Thanks to Sohail Somani)</li>
<li>Adapted repository layout to boost (Thanks to Alex Ott)</li>
</ul>
<p><b>0.2.4 (Stable)</b></p>
<ul>
<li>Made threadpool compatible to boost::thread 1.35.x code base</li>
<li>Fixed compiler warning in scope_guard.hpp</li>
</ul>
<p><b>0.2.4 (Stable)</b></p>
<ul>
<li>Made threadpool compatible to boost::thread 1.35.x code base</li>
<li>Fixed compiler warning in scope_guard.hpp</li>
</ul>
<p><b>0.2.3 (Development)</b></p>
<ul>
<li>Implemented workaround for Sun C++ Pro compiler bug in pool_core</li>
<li>Removed subtask implementation (there was no demand for this feature)</li>
<li>Improved shutdown policies</li>
</ul>
<p><b>0.2.2 (Development)</b></p>
<ul>
<li>Refactored SizePolicy and added SizePolicyController</li>
<li>Moved policies into separate files</li>
<li>Fixed some compiler problems (GCC)</li>
<li>Implemented size_controller handling</li>
<li>Implemented two size policies: static_size and fixed_size</li>
<li>Refactored worker_thread handling, moved policies from pool_core to pool</li>
<li>Specialized schedule function for usage with futures</li>
<li>Added compile test project</li>
<li>Improved constness in pool core class</li>
<li>Fixed timed wait</li>
<li>Implemented futures (in progress)</li>
<li>Added result_type to all functors</li>
</ul>
<p><b>0.2.1 (Development)</b></p>
<ul>
<li>Pool base class (thread_pool) has now reference semantics.</li>
<li>Large refactorings: Removed scoped_pool, reimplemented worker (now worker_thread)</li>
<li>Fixed odd resize behaviour. Now resize changes the number of threads immediately.</li>
<li>Apply pimpl idiom on pool core class (to make the ugly scoped_pool class needless)</li>
<li>Introduced scheduling policies</li>
<li>Switched to policy-based design (PBD), inspired by Scott Meyers C++ workshop</li>
<li>Cosmetic code change: Replaced keyword 'class' with 'typename' in template definitions</li>
<li>Revised tutorials</li>
<li>New requirements: tasks functions should not and schedulers shall not throw exceptions</li>
</ul>
<p><b>0.2.0 (Development)</b></p>
<ul>
<li>Moved threadpool into the boost namespace: boost::threadpool</li>
<li>Used keyword volatile to indicate thread-safe member functions</li>
<li>Used volatile on primitve types were appropriate</li>
<li>Moved worker to detail directory</li>
<li>Fixed thread deletion</li>
<li>Extended wait functionality (waiting for idle threads was implemented)</li>
<li>Renamed 'join()' to 'wait()' as 'join' indicates the termination of thread. That was not the case in pool::join.</li>
<li>Changed internal container of lifo and fifo schedulers to improve efficiency.</li>
<li>Improved code reference documentation (source code browser)</li>
<li>Renamed thread_func into task_func</li>
<li>Added += operator to scoped_pool to ease scheduling of tasks</li>
<li>Refactored file structures and class names</li>
<li>Added a new task concept (named subtask) which allows the combination of sequential and parallel execution</li>
<li>Added new task adaptor for looped or timed tasks: looped_task_func</li>
<li>Introduced function clear() which can be used to remove all tasks from the pool and schedulers</li>
<li>New function pool::active() which returns the number of active tasks</li>
</ul>
<p><b>0.1.8 (Development)</b></p>
<ul>
<li>Fixed some compile errors which were reported by gcc</li>
<li>Wrote tutorial "Prioritized Tasks"</li>
</ul>
<p><b>0.1.7 (Development)</b></p>
<ul>
<li>Added Visual Studio 2005 project files for tutorial and examples</li>
</ul>
<p><b>0.1.6 (Development)</b></p>
<ul>
<li>Replaced task adaptor 'task' with boost::bind</li>
<li>Workers are unregistered from thread_group when they are terminated</li>
<li>Working on example boost::iostreams packet_filter</li>
</ul>
<p><b>0.1.5 (Development)</b></p>
<ul>
<li>Finished threadpool reference</li>
<li>Class pool_adaptor was replaced by smart_pool</li>
<li>Minor pool improvements</li>
<li>First tutorial page online</li>
</ul>
<p><b>0.1.4 (Development)</b></p>
<ul>
<li>Created the pool's homepage: <a href="http://threadpool.sourceforge.net">http://threadpool.sourceforge.net</a></li>
<li>Improved documentation</li>
<li>Added build scripts</li>
</ul>
<p><b>0.1.3 (Development)</b></p>
<ul>
<li>First public release</li>
<li>Added mergesort example</li>
<li>Added tutorial</li>
<li>Implementation of threadpool core and related classes </li>
</ul>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

    <BR>
    <DIV CLASS="qindex">
      <TABLE BORDER="0" WIDTH="100%">
        <TR>
          <TD CLASS="tiny" ALIGN="LEFT">Copyright &copy 2005-2008 Philipp Henkel</TD>
          <TD ALIGN="RIGHT">
            <A CLASS="qindex" HREF="index.html">Overview</A> |
            <A CLASS="qindex" HREF="reference/annotated.html">Reference</A> |
            <A CLASS="qindex" HREF="tutorial/intro.html">Tutorial</A> |
            <A CLASS="qindex" HREF="examples/intro.html">Examples</A> |
            <A CLASS="qindex" HREF="design/intro.html">Design</A>
          </TD>
        </TR>
      </TABLE>
    </DIV>
  </BODY>
</HTML>
